package com.lyb.hardware.cpu;

import com.lyb.constant.StatusConstant;

import java.util.HashMap;
import java.util.Map;

/**
 * CPU中的核心寄存器组类
 *
 * @author Mr.Alpaca
 * @version 1.4.0
 */
public class AlpacaRegister {
    /**
     * 程序状态字，标识当前进程的状态：
     * 1.可执行(就绪)
     * 2.运行结束
     * 3.时间片结束
     * 4.I/O阻塞
     */
    private String psw;
    /**
     * 数据寄存器
     * 存储一个进程的运算结果
     */
    private final Map<String, Double> dr;
    /**
     * 指令寄存器
     * 存储执行的指令
     */
    private String ir;
    /**
     * 程序计数器
     * 指向下一条指令在内存中的位置
     */
    private int pc;
    /**
     * 初始化各寄存器值
     */
    public AlpacaRegister() {
        /* 初始PSW为运行正常 */
        psw = StatusConstant.NORMAL;
        dr = new HashMap<>();
        ir = StatusConstant.EMPTY;
        psw = StatusConstant.NORMAL;
        /* PC默认为0 */
        pc = 0;
    }

    /* ********** Getter & Setter ********** */

    public String getPsw() {
        return psw;
    }

    public void setPsw(String psw) {
        this.psw = psw;
    }

    public Map<String, Double> getDr() {
        return dr;
    }

    public String getIr() {
        return ir;
    }

    public void setIr(String ir) {
        this.ir = ir;
    }

    public int getPc() {
        return pc;
    }

    public void setPc(int pc) {
        this.pc = pc;
    }
}
